package br.com.saeng2D.objeto.apoio;

import java.awt.BasicStroke;
import java.awt.Graphics2D;
import java.awt.Stroke;

import br.com.saeng2D.objeto.AbstratoObjeto;
import br.com.saeng2D.objeto.animado.Associacao;
import br.com.saeng2D.objeto.animado.VetorAnimado;
import br.com.saeng2D.util.Util;

public class Apoio3 extends AbstratoApoio {

	public Apoio3(int x, int y) {
		super("apoio3", x, y);
		inicializacao();
		this.corFundo = Util.getCor("cor_apoio3");
	}
	
	public void inicializacao() {
		vetores = new VetorAnimado[3];
		vetores[0] = new VetorAnimado( 30.0f, 0.0f, false, false);
		vetores[1] = new VetorAnimado(-30.0f, 0.0f, false, false);
		vetores[2] = new VetorAnimado(  0.0f, 5.0f, false,  true);

		vetorReferencia = vetores[2];

		associacoes = new Associacao[2];
		associacoes[0] = new Associacao(vetores[0], vetores[1]);
	}

	public void reassociar() {
		vetorReferencia = vetores[2];

		associacoes = new Associacao[2];
		associacoes[0] = new Associacao(vetores[0], vetores[1]);
	}
	
	public void alterarTamanho(int tamanho) {
		super.alterarTamanho(tamanho);
		vetores[2].alterarTamanho((int) 5.0);
//		vetores[2].alterarTamanho(tamanho + tamanho / 3); // serve para colocar o traço no apoio de 3 Genero.
	}
	
	public AbstratoObjeto prototipo() {
		Apoio3 apoio = new Apoio3(x, y);
		apoio.vetores = vetores;
		apoio.associacoes = associacoes;
		apoio.vetorReferencia = vetorReferencia;
		return apoio;
	}
	
	public void desenhar(Graphics2D g2) {
		if(!isVisivel()) {
			return;
		}
		g2.setStroke(AbstratoObjeto.LARGURA_LINHA_ABSTRATO_OBJETO);
		if (selecionado) {
			g2.setColor(corSelecionado);
		} else {
			g2.setColor(corFundo);
		}
		desenhar(g2, vetores[2]);
		g2.setStroke(stroke);
		desenhar(g2, associacoes[0]);
	}
	
	private Stroke stroke = new BasicStroke(5, 0, 0, 1, new float[] { 1, 2 }, 0); 
}